Skip to content

[pull] main from MetaMask:main#353

Merged
pull[bot] merged 9 commits into
Reality2byte:mainfrom
MetaMask:main
Nov 25, 2025
Merged

[pull] main from MetaMask:main#353
pull[bot] merged 9 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Nov 25, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

PatrykLucka and others added 9 commits November 25, 2025 11:30
…t method support (#23043)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
This PR fixes NFT transaction display in activity view.
Two major bugs has been fixed:

- Send NFT transaction was not displayed at all (when it was initiated
from different device)
- Mint transactions were not recognized (they were displayed as "Sent
ETH")

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Fixed a bug that was preventing NFT transactions to be
displayed in activity view

## **Related issues**

Fixes: #18229
https://consensyssoftware.atlassian.net/browse/TMCU-126

## **Manual testing steps**

```gherkin
Feature: Show NFT transactions

  Scenario: user checks activity tab for NFT transactions
    Given user sent NFT with different device (ie. from extension)

    When user opens Activity trab
    Then "Sent Collectible" should be displayed correctly in the list
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**
<img width="392" height="806" alt="Screenshot 2025-11-21 at 11 42 01"
src="https://github.com/user-attachments/assets/dec318ae-4217-4825-9f6e-85619a66c0e1"
/>

<!-- [screenshots/recordings] -->

### **After**
<img width="376" height="819" alt="Screenshot 2025-11-21 at 11 58 49"
src="https://github.com/user-attachments/assets/a8d70d3a-4941-4c0a-9ea5-6b0e6c9e5ccb"
/>

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Fixes collectible/transferFrom decoding and activity filtering, and
recognizes common NFT mint methods with updated action keys and tests.
> 
> - **Transactions**:
> - **transferFrom decoding**: Decode recipient from calldata; fallback
to `tx.transferInformation` when data is truncated; determine direction
case‑insensitively from `from`; handle `tokenId` rendering and avoid
undefined/NaN values.
> - **Action keys/types**: Distinguish NFT (ERC721/1155) vs ERC20
`transferFrom`; map
`tokenMethodTransferFrom`/`tokenMethodSafeTransferFrom` to
`transferfrom`; handle `deployContract` and `contractInteraction` cases;
add labeling for mint.
> - **Mint support**: Recognize common NFT mint signatures
(`SAFE_MINT_SIGNATURE`, `MINT_SIGNATURE`, `MINT_TO_SIGNATURE`,
`SAFE_MINT_WITH_DATA`) and return `TOKEN_METHOD_MINT`.
> - **Activity filtering**:
> - Show outgoing transfers even if token isn’t in list; keep incoming
transfers requiring token presence in list.
> - **Localization**:
>   - Add `transactions.mint` string.
> - **Tests**:
> - Add/adjust unit tests for transferFrom decoding, action key logic,
mint detection, and activity filters.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5603616. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

PR to add search functionality in trending tokens page and pull down to
refresh logic.
## **Changelog**

CHANGELOG entry: Adds search functionality for trending and pull down to
refresh. This is still under FF.

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds search and pull-to-refresh to Trending Tokens, introduces a
reusable header with search used by Trending and Perps, refines network
filtering, and updates hooks/tests.
> 
> - **Trending Tokens UX**:
> - Adds in‑header search to `TrendingTokensFullView` via new
`TrendingListHeader` using reusable `shared/ListHeaderWithSearch`.
> - Implements pull‑to‑refresh (`RefreshControl`) in
`TrendingTokensList` and wires refresh in full view.
> - Hides control bar when searching; filters section data client‑side;
displays skeletons appropriately.
> - **Sections/Data Flow**:
> - Extends `SECTIONS_CONFIG.tokens.useSectionData` to accept `{
searchQuery, sortBy, chainIds }`, merge search + trending results, and
expose `refetch`.
> - Updates `useTrendingRequest`: simplifies (removes cache), debounced
fetch with explicit loading; defaults to popular networks when
`chainIds` empty.
> - **Networks**:
> - Refactors `usePopularNetworks` (path changes) to filter testnets
(EVM/Bitcoin/Solana) and exclude EVM custom RPCs; sorts Ethereum and
Linea first.
> - `TrendingTokenNetworkBottomSheet`: switches to local hook path and
excludes additional networks by CAIP (incl. BTC mainnet) from picker.
> - **Reusable Header**:
> - New `shared/ListHeaderWithSearch` component; refactors
`PerpsMarketListHeader` to use it.
> - **Tests & i18n**:
> - Adds comprehensive tests for new headers, bottom sheets, list,
hooks, and full view; updates expectations to `toBeOnTheScreen`.
>   - Adds `trending.cancel` string; minor style import path fixes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
78bcccd. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Prevent quote specific alerts persisting when keyboard is visible in
MetaMask Pay.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #23134 

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Prevents MetaMask Pay alerts from persisting while editing amounts by
gating fee/network alerts during input, adds a `ConfirmationAlerts`
wrapper, and updates tests.
> 
> - **Alerts handling**
> - Suppress fee/native-balance alerts while a pending amount is being
edited via new `pendingAmountUsd` option in
`useInsufficientPayTokenBalanceAlert` and `isPendingAlert` guards.
> - Improve target amount calculation to clamp within valid bounds and
handle negative shortfalls.
> - Update tests to cover pending-amount behavior and edge cases
(negative shortfall, no-target messages).
> - **UI/Provider refactor**
> - Replace inline `AlertsContextProvider` usage with new
`ConfirmationAlerts` wrapper in `confirm-component.tsx` that sources
alerts via `useConfirmationAlerts`.
> - **Custom amount flow**
> - On Done, call `updateTokenAmount()` and `EngineService.flushState()`
to finalize state before hiding keyboard.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
66d2549. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

This PR aims to add a support for predefined recipient into send flow
navigation. It mainly aims to support opening send flow through QR
scanner.

In order to send predefined recipient flows should call
`navigateToSendPage` callback from
`app/components/Views/confirmations/hooks/useSendNavigation.ts` hook.

Let's assume we already validated the QR address is Solana address. In
that scenario a call like

```
navigateToSendPage({
   location: "QRScanner",
   predefinedRecipient: {
       address: '7W54AwGDYRF7Xmoi6phjTnrQhruYtoUdCKJMYAXP7VWC',
       chainType: "solana",
   },
})
```
will open assets page in the send flow and it will skip recipient page
as user already wants to send into that address.

All the navigations that will come from QR scanner have to fill
validated recipient address and the flag for the type. For more
information please see `handleSendPageNavigation` jsdoc or
`SendNavigationParams.PredefinedRecipient`

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

Fixes: #21758

## **Manual testing steps**

Adds predefined recipient navigation to send flow - so this is currently
a technical feature which doesn't have any usage for now.

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**



https://github.com/user-attachments/assets/f7327bf1-ec0a-4255-a441-b98e2cf20aa2



## **Pre-merge author checklist**

- [X] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [X] I've completed the PR template to the best of my ability
- [X] I’ve included tests if applicable
- [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [X] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Adds predefined recipient handling to the new send flow, refactors
navigation to a param object API, updates amount/asset selection logic,
and expands tests.
> 
> - **Send flow & navigation**:
> - Introduce `ChainType`, `PredefinedRecipient`, and
`SendNavigationParams`; refactor `handleSendPageNavigation` to accept a
params object and pass `predefinedRecipient` to routes.
> - Update `useSendNavigation` to accept params and propagate
`isSendRedesignEnabled` internally; migrate callers (`AssetOverview`,
`CollectibleModal`, `NftDetails`, `Wallet`).
> - Amount screen (`AmountKeyboard`) now reads `predefinedRecipient`
from route params and skips the recipient step, calling
`updateTo`/`handleSubmitPress` directly.
> - **Asset selection & tokens**:
> - Add `useSendTokens` to filter tokens by chain type based on
`useSendType`; switch `Asset` component to use it.
> - Simplify `useAccountTokens` (remove scope filtering) and keep
balance-based filtering/formatting.
> - **Utilities**:
> - Add `derivePredefinedRecipientParams` to infer chain type from an
address.
> - **Tests**:
> - Add/adjust tests for navigation, amount flow, send type detection,
token filtering, gas/amount validation, and address utils; update mocks
to new APIs.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
acda598. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Added horizontal padding (16px) to the `ScreenLayout` component's
content section to improve UI consistency across Ramp/Deposit screens.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TRAM-2866

## **Manual testing steps**

```gherkin
Feature: ScreenLayout padding

  Scenario: user views any Ramp screen
    Given user opens any Ramp/Deposit flow screen
    When user views the content area
    Then content should have consistent 16px horizontal padding
```

## **Screenshots/Recordings**

### **Before**

<img width="299" alt="image"
src="https://github.com/user-attachments/assets/d01c740b-07c0-4b98-b021-e21a69d96ac8"
/>


### **After**

<img width="299" alt="image"
src="https://github.com/user-attachments/assets/a3e30aaf-a908-47a1-ac69-5619eee29b88"
/>


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
… Sentry when user tries to add a chain with unrecognized rpc url (#23075)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

Sentry Issue:
[METAMASK-MOBILE-2DVH](https://metamask.sentry.io/issues/5351012899/?referrer=github_integration)

```
Error: {"code":4100,"message":"Request blocked due to spam filter."}
  at ?anon_0_ (app/util/Logger/index.ts:83:32)
...
(11 additional frame(s) were not displayed)
```

Steps to reproduce:

- Go to https://bridge.coredao.org/coreBTC
- Click on "Add coreBTC to your wallet"
- MM will throw "Unrecognized chain ID "0x45c". Try adding the chain
using wallet_addEthereumChain first."

Here we throw a Sentry error while we'd like to send and Error event in
Segment instead.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Routes RPC errors from `createLoggerMiddleware` to analytics (with
better message selection) instead of Sentry, and adds comprehensive unit
tests for middlewares.
> 
> - **Utilities — `app/util/middlewares.js`**:
> - **RPC error handling**: Replace Sentry logging with analytics
tracking via `trackErrorAsAnalytics`.
> - User rejections tracked as `Error in RPC response: User rejected`.
> - Non-user errors tracked as `Error in RPC response` using
`error.data?.message || error.message || 'Unknown RPC error'`.
>     - Removes `Logger.error` and related error param construction.
> - **Logging**: Preserve `Logger.log` of RPC activity; skip when
`req.isMetamaskInternal`.
> - **Tests — `app/util/middlewares.test.js`**:
> - Add tests for `createOriginMiddleware`, `containsUserRejectedError`,
and `createLoggerMiddleware` covering success, user rejection, non-user
errors, internal requests, and edge cases.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
434135e. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com>
…tion (#23256)

## **Description**

Changed the network filter in the TokenSelection screen from
checkbox-style (multi-select) to radio button-style (single-select)
behavior. Users can now select only one network at a time, or view all
networks.

The implementation simplifies the `TokenNetworkFilterBar` component by
replacing the toggle logic with a straightforward single-selection
mechanism. All existing filtering logic in parent components remains
compatible.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes:  https://consensyssoftware.atlassian.net/browse/TRAM-2867

## **Manual testing steps**

```gherkin
Feature: Token selection network filter

  Scenario: user selects a single network filter
    Given the user is on the Token Selection screen
    And "All Networks" is selected

    When user taps on "Ethereum" network button
    Then only "Ethereum" button should be highlighted
    And only Ethereum network tokens should be displayed

  Scenario: user switches between network filters
    Given the user has "Ethereum" network selected
    And only Ethereum tokens are displayed

    When user taps on "Polygon" network button
    Then "Ethereum" button should no longer be highlighted
    And only "Polygon" button should be highlighted
    And only Polygon network tokens should be displayed

  Scenario: user returns to all networks view
    Given the user has "Polygon" network selected

    When user taps on "All Networks" button
    Then "All Networks" button should be highlighted
    And "Polygon" button should no longer be highlighted
    And tokens from all networks should be displayed
```

## **Screenshots/Recordings**

### **Before**


https://github.com/user-attachments/assets/cbf54072-4a0d-416c-9da1-5af76212d68d


### **After**




https://github.com/user-attachments/assets/83f662a5-00bf-4133-89fd-accd259208e3




## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Switches the Ramp token network filter to single-select with
simplified handlers and updates tests/snapshots accordingly.
> 
> - **UI/Logic**:
> - Refactor `TokenNetworkFilterBar` to single-select behavior
(radio-style): `All` sets `networkFilter` to `null`; pressing a network
always sets `networkFilter` to `[chainId]`.
> - Simplify handlers using `useCallback`; remove multi-select/toggle
logic and dependency on `excludeFromArray`.
> - **Tests**:
> - Update tests to reflect single-select behavior: add `handleAllPress`
test; adjust `handleNetworkPress` expectations (replace/add/remove
scenarios).
>   - Refresh snapshots; remove snapshot for partial multi-select state.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ee39c8b. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Resource (singular) is awkward and should be resources (plural)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Updated copy "Daily resource" to "Daily resources"

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [ ] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates `asset_overview.tron.daily_resource` copy from “Daily
resource” to “Daily resources”.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
1010630. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

Fix Predict withdraw when using gas station with insufficient existing
token balance.

Bump `transaction-controller` and `transaction-pay-controller`.

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: #23137 #23126

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Prevents gas-fee token injection/external sign when
`txMeta.isGasFeeTokenIgnoredIfBalance` is set; wires Remote Feature Flag
messenger action; bumps transaction/transaction-pay controllers.
> 
> - **Confirmations**:
> - Update `useTransactionConfirm` to skip adding `batchTransactions`
and `isExternalSign` when `txMeta.isGasFeeTokenIgnoredIfBalance` is
true.
> - Include `isGasFeeTokenIgnoredIfBalance` in metadata handling for
smart transactions and 7702 flows.
> - **Tests**:
> - Add tests ensuring no gas-fee token batching or external signing
when `isGasFeeTokenIgnoredIfBalance` is set.
> - **Messaging**:
> - Allow `RemoteFeatureFlagController:getState` in
`transaction-controller` init messenger.
> - **Dependencies**:
> - Bump `@metamask/transaction-controller` to `62.3.0` and
`@metamask/transaction-pay-controller` to `10.1.0` (with corresponding
lockfile updates).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ccbc4d8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@pull pull Bot locked and limited conversation to collaborators Nov 25, 2025
@pull pull Bot added the ⤵️ pull label Nov 25, 2025
@pull pull Bot merged commit 69d1ae2 into Reality2byte:main Nov 25, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants